]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
ibusCandidatePopup: handle mouse scroll event on candidates
authorPeng Wu <alexepico@gmail.com>
Mon, 12 Dec 2016 08:02:32 +0000 (16:02 +0800)
committerRui Matos <tiagomatos@gmail.com>
Thu, 19 Jan 2017 14:18:43 +0000 (15:18 +0100)
When use mouse scroll button on input method candidates,
move the cursor up/down on candidates.

https://bugzilla.gnome.org/show_bug.cgi?id=776032

js/ui/ibusCandidatePopup.js

index 05875a80b593d1e698760a322c135bc202b3e7ff..683bb3003f68397db221652d9aa2bb1a2d4b96b4 100644 (file)
@@ -19,6 +19,7 @@ const CandidateArea = new Lang.Class({
 
     _init: function() {
         this.actor = new St.BoxLayout({ vertical: true,
+                                        reactive: true,
                                         visible: false });
         this._candidateBoxes = [];
         for (let i = 0; i < MAX_CANDIDATES_PER_PAGE; ++i) {
@@ -39,6 +40,19 @@ const CandidateArea = new Lang.Class({
             }));
         }
 
+        this.actor.connect('scroll-event', Lang.bind(this, function(actor, event) {
+            let direction = event.get_scroll_direction();
+            switch(direction) {
+            case Clutter.ScrollDirection.UP:
+                this.emit('cursor-up');
+                break;
+            case Clutter.ScrollDirection.DOWN:
+                this.emit('cursor-down');
+                break;
+            };
+            return Clutter.EVENT_PROPAGATE;
+        }));
+
         this._buttonBox = new St.BoxLayout({ style_class: 'candidate-page-button-box' });
 
         this._previousButton = new St.Button({ style_class: 'candidate-page-button candidate-page-button-previous button' });
@@ -144,6 +158,14 @@ const CandidatePopup = new Lang.Class({
         this._candidateArea.connect('next-page', Lang.bind(this, function() {
             this._panelService.page_down();
         }));
+
+        this._candidateArea.connect('cursor-up', Lang.bind(this, function() {
+            this._panelService.cursor_up();
+        }));
+        this._candidateArea.connect('cursor-down', Lang.bind(this, function() {
+            this._panelService.cursor_down();
+        }));
+
         this._candidateArea.connect('candidate-clicked', Lang.bind(this, function(ca, index, button, state) {
             this._panelService.candidate_clicked(index, button, state);
         }));